#include <my_head.h>

int main(int argc, const char *argv[]){
    pid_t pid = 0;
    if(-1 == (pid = fork())){
        ERR_LOG("fork error");
    }else if(0 < pid){ // 父
        #if 0
        if(-1 == wait(NULL)) // 不管子进程退出的状态值 可以传NULL ----常用的用法
            ERR_LOG("wait error");
        printf("我是父进程 回收子进程资源成功\n");
        #else
        // 关心子进程退出状态值
        int wstatus = 0;
        if(-1 == wait(&wstatus))
            ERR_LOG("wait error");
        if(WIFEXITED(wstatus)){// 说明子进程是正常结束的
            printf("子进程是正常结束的 退出状态值为:[%d]\n", WEXITSTATUS(wstatus));
        }else if(WIFSIGNALED(wstatus)){ // 说明子进程是被信号中断的
            printf("子进程是被信号中断的 中断子进程的信号的编号为:[%d]\n", WTERMSIG(wstatus));
        }
        #endif
        sleep(100);
    }else if(0 == pid){ // 子
        printf("我是子进程 %d\n", getpid());
        sleep(10);
        printf("我是子进程 %d 退出\n", getpid());
        exit(200);
    }
    return 0;
}